package com.tjdx.projectsubmission.service.impl;


import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.tjdx.projectsubmission.db.entity.FillReportDetail;
import com.tjdx.projectsubmission.db.mapper.FillReportDetailMapper;
import com.tjdx.projectsubmission.db.mapper.FillReportMapper;
import com.tjdx.projectsubmission.service.FillReportDetailService;
import com.tjdx.projectsubmission.util.SubmitUtil;
import com.tjdx.projectsubmission.vo.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Slf4j
@Service
public class FillReportDetailServiceImpl implements FillReportDetailService {


    @Autowired
    private FillReportDetailMapper reportDetailMapper;


    @Override
    public R updateOne(FillReportDetail fillReportDetail) {
        /**
         * 是否确认  1：是 2：否
         */
        // 是否通过  1：确认  2：驳回
        if (fillReportDetail.getIsAdopt() != null) {
            if (fillReportDetail.getIsAdopt().intValue() == 1) {
                // 如果已经确定了，用户不可以修改了。
                fillReportDetail.setIsConfirm(1);

                // 校验通过，调用上传梧桐连接口
                String data = JSONObject.toJSONString(fillReportDetail);
                if (StringUtils.isBlank(data) || "null".equals(data)) {
                    return R.error().message("参数错误");
                }
                log.info("填报页数据提交接口 - data:[{}]", data);
                //区块链交易id
                String dataId = SubmitUtil.submitBlockchain(data);
                if (StringUtils.isBlank(data) || "null".equals(data)) {
                    return R.error().message("参数错误");
                }
                log.info("区块链交易id - data:[{}]", dataId);
                fillReportDetail.setBlockHash(dataId);

            } else if (fillReportDetail.getIsAdopt().intValue() == 2) {
                // 如果驳回后，是否确认改为否，用户可以修改
                fillReportDetail.setIsConfirm(2);
            }
        }
        int i = reportDetailMapper.updateByPrimaryKey(fillReportDetail);
        return i > 0 ? R.ok() : R.error();
    }


}
